// colorUtils.ts

/**
 * 将任意颜色格式转换为 RGBA 格式
 * @param {string} color 原始颜色值
 * @param {number} alpha 透明度值，范围从 0 到 1
 * @return {string} 返回 RGBA 格式的颜色字符串
 */
export function toRgba(color: string, alpha: number): string {
  // 定义正则表达式来匹配不同的颜色格式
  const hexColor = /^#([0-9A-F]{3}){1,2}$/i
  const rgbColor = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/
  const rgbaColor = /^rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/

  // 处理 HEX 颜色
  if (hexColor.test(color)) {
    const hex = color.replace(/^#/, '')
    const r = parseInt(hex.slice(0, 2), 16)
    const g = parseInt(hex.slice(2, 4), 16)
    const b = parseInt(hex.slice(4, 6), 16)
    return `rgba(${r}, ${g}, ${b}, ${alpha})`
  }

  // 处理 RGB 颜色
  if (rgbColor.test(color)) {
    const rgbMatch = color.match(rgbColor)
    if (rgbMatch) {
      const r = parseInt(rgbMatch[1], 10)
      const g = parseInt(rgbMatch[2], 10)
      const b = parseInt(rgbMatch[3], 10)
      return `rgba(${r}, ${g}, ${b}, ${alpha})`
    }
  }

  // 处理 RGBA 颜色，只修改透明度部分
  if (rgbaColor.test(color)) {
    const rgbaMatch = color.match(rgbaColor)
    if (rgbaMatch) {
      const r = parseInt(rgbaMatch[1], 10)
      const g = parseInt(rgbaMatch[2], 10)
      const b = parseInt(rgbaMatch[3], 10)
      return `rgba(${r}, ${g}, ${b}, ${alpha})`
    }
  }

  // 默认返回原颜色（可能不支持的颜色格式）
  return color
}
